#pragma once
#include "Socket.hpp"
#include <memory>
using namespace SocketModule;

class Epoll;

// 事件处理器接口：定义事件处理方法
class EventHandler
{
public:
    // 处理读事件
    virtual void HandleRecv() {}
    // 处理写事件
    virtual void HandleSend() {}
    // 处理错误事件
    virtual void HandleExce() {}
    virtual int Fd() = 0;
    void SetMonitor(Epoll *monitor)
    {
        _monitor = monitor;
    }
    uint32_t Events()
    {
        return _events;
    }
    void SetEvents(uint32_t events)
    {
        _events = events;
    }

protected:
    EventHandler(Epoll *monitor = nullptr)
        : _monitor(monitor)
    {}
    ~EventHandler() {}
    std::string _recv_buffer; // 接收缓冲区
    std::string _send_buffer; // 发送缓冲区
    Epoll *_monitor;          // 监视该事件的Epoll实体
    uint32_t _events;
};